/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pokerlan;
/**
 *
 * @author Administrador
 */

/**
 * La clase Carta representa a un naipe. Almacena también la ruta donde se
 * encuentra la imagen correspondiente a la carta en la variable rutaImagen
 * automáticamente. Ejemplo recibe como palo "Diamantes" y como valor 5,
 * los concatena y almacena en rutaImagen: "Diamantes_5".
 */

public class Carta {


    private int valor;
    private int palo;
    private String rutaImagen;
    static Carta[] Baraja = new Carta[52];
    private static int cartasRepartidas = 0;

    /**
     *
     * @param valor El valor de las cartas será el de su número,
     * además de 11 para J, 12 para Q, 13 para K y 14 para A.
     * @param palo Los palos serán: Diamantes = 1, Picas = 2, Corazones = 3 y Treboles = 4.
     */
    Carta(int valor, int palo){
        this.valor = valor;
        this.palo = palo;
        rutaImagen = Integer.toString(palo) + '_' + Integer.toString(valor);
    }

    /**
     *
     * @return devuelve el valor de la carta (2-10 los mismos valores, J=11, Q=12, K=13, A=14)
     */
    public int devuelveValor(){
        return valor;
    }

    /**
     *
     * @return devuelve el palo de la carta
     */
    public int devuelvePalo(){
        return palo;
    }

    /**
     * Muestra por pantalla el palo y el valor de la carta.
     */
    public void muestraCarta(){
        System.out.println(this.palo +" " +this.valor);
    }

    /**
     *
     * @return devuelve la ruta de la imagen que corresponde a la carta
     */
    public String devuelveRutaImagen(){
        return rutaImagen;
    }

    /**
     * Este método crea una baraja ordenada.
     */
    public static void crearBaraja(){
        int palo = 1;
        int valor = 2;
        int posicion = 0;
        while(palo<5){
            valor = 2;
            while(valor<15){
                Baraja[posicion] = new Carta(valor, palo);
                valor++;
                posicion++;
            }
            palo++;
        }
    }

    /**
     * Este método muestra la baraja. Sólo se usa para pruebas.
     */
    public static void mostrarBaraja(){
        for(int i=0; i<52; i++){
            System.out.println(Baraja[i].devuelvePalo()+" " +Baraja[i].devuelveValor());
        }
    }

    /**
     * Este método desordena la baraja de forma aleatoria gracias al método Math.random.
     */
    public static void barajarCartas(){
        cartasRepartidas = 0;
        Carta temporal = null;
        int aleatorio;
        for(int pasada=1; pasada<=7; pasada++){
            for(int posicion=0; posicion<52; posicion++){
                aleatorio = (int) (Math.random()*51);
                temporal = Baraja[aleatorio];
                Baraja[aleatorio] = Baraja[posicion];
                Baraja[posicion] = temporal;
            }
        }
    }

    public static Carta repartirCarta(){
        cartasRepartidas ++;
        return Baraja[cartasRepartidas - 1];
    }

}
